home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / samples / olecon~1 / controls / invisi~1 / invisi~3.cpp < prev    next >
Text File  |  1995-11-25  |  6KB  |  199 lines

  1. //=--------------------------------------------------------------------------=
  2. // InvisiblePPG.Cpp
  3. //=--------------------------------------------------------------------------=
  4. // Copyright  1995  Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // property page implementations for Invisible control.
  13. //
  14. #include "IPServer.H"
  15.  
  16. #include "LocalObj.H"
  17. #include "InvisiblePPG.H"
  18. #include "InvisibleCtl.H"
  19. #include "Resource.H"
  20. #include "Util.H"
  21.  
  22.  
  23. // for ASSERT and FAIL
  24. //
  25. SZTHISFILE
  26.  
  27. //=--------------------------------------------------------------------------=
  28. // Property Page messages
  29. //=--------------------------------------------------------------------------=
  30. // in addition to regular windows messages you'll receive for a dialog box,
  31. // you'll receive the following messages in your property page implementation:
  32. //
  33. // PPM_NEWOBJECTS:
  34. //    wParam = 0;
  35. //    lParam = (LPARAM)(HRESULT *)hr
  36. //
  37. //  - in this message, you should call FirstControl() to get a pointer to a
  38. //    control, and initialize the values in the property page dialog with
  39. //    values from the control object.  put results from the operation in
  40. //    the HRESULT pointed to by LPARAM.
  41. //
  42. // PPM_APPLY:
  43. //    wParam = 0;
  44. //    lParam = (LPARAM)(HRESULT *)hr
  45. //
  46. //  - this message is sent to your dialog whenever the user clicks APPLY or OK
  47. //    in the dialog.  you should have a loop with the following code in it:
  48. //
  49. //      for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
  50. //            hr = pUnk->QueryInterface(IID_IMyCtlInterface, (void **)&pMyCtl);
  51. //            // set properties here!!!
  52. //      }
  53. //
  54. //    call PropPageException() if there is an error while setting propertites
  55. //    to show the exception set up by the property set routine.
  56. //
  57. // PPM_EDITPROPERTY:
  58. //    wParam = dispid
  59. //    lParam = (LPARAM)(HRESULT *)hr
  60. //
  61. //  - sent to your dialog when somebody wants you to set the focus to a specific
  62. //    property [typically, one will see a call to this when one returns a page
  63. //    from IPerPropertyBrowsing::MapPropertyToPage].  you can use this
  64. //    to bring up dialogs, or do whatever flaps your flagella.
  65. //
  66.  
  67.  
  68. //=--------------------------------------------------------------------------=
  69. // CInvisibleGeneralPage::Create
  70. //=--------------------------------------------------------------------------=
  71. // global static creation function.
  72. //
  73. // Parameters:
  74. //    IUnknown *    - [in] controlling unknown
  75. //
  76. // Output:
  77. //    IUnknown *    - new prop page.
  78. //
  79. // Notes:
  80. //
  81. IUnknown *CInvisibleGeneralPage::Create
  82. (
  83.     IUnknown *pUnkOuter
  84. )
  85. {
  86.     return (IUnknown *)new CInvisibleGeneralPage(pUnkOuter);
  87. }
  88.  
  89. //=--------------------------------------------------------------------------=
  90. // CInvisibleGeneralPage::CInvisibleGeneralPage
  91. //=--------------------------------------------------------------------------=
  92. // constructor.
  93. //
  94. // Parameters:
  95. //    IUnknown *        - [in] controlling unknown.
  96. //
  97. // Notes:
  98. //
  99. CInvisibleGeneralPage::CInvisibleGeneralPage
  100. (
  101.     IUnknown *pUnkOuter
  102. )
  103. : CPropertyPage(pUnkOuter, OBJECT_TYPE_PPGINVISIBLEGENERAL)
  104. {
  105.     // initialize local variables here.
  106. }
  107.  
  108. //=--------------------------------------------------------------------------=
  109. // CInvisibleGeneralPage::~CInvisibleGeneralPage
  110. //=--------------------------------------------------------------------------=
  111. // destructor.
  112. //
  113. // Notes:
  114. //
  115. CInvisibleGeneralPage::~CInvisibleGeneralPage()
  116. {
  117.     // clean up
  118. }
  119.  
  120. //=--------------------------------------------------------------------------=
  121. // CInvisibleGeneralPage::DialogProc
  122. //=--------------------------------------------------------------------------=
  123. // our dialog proc.
  124. //
  125. // Parameters:
  126. //    - see win32sdk docs on DialogProc
  127. //
  128. // Notes:
  129. //
  130. BOOL CInvisibleGeneralPage::DialogProc
  131. (
  132.     HWND   hwnd,
  133.     UINT   msg,
  134.     WPARAM wParam,
  135.     LPARAM lParam
  136. )
  137. {
  138.    switch (msg) {
  139.  
  140.       // we've been given some new objects, so go and re-set up the dialog page.
  141.       //
  142.       case PPM_NEWOBJECTS:
  143.         {
  144.         HRESULT     hr;
  145.         IInvisible*pInvisible;
  146.         IUnknown   *pUnk;
  147.         DWORD       dwDummy;
  148.         long        l;
  149.  
  150.         pUnk = FirstControl(&dwDummy);
  151.         if (!pUnk) return FALSE;
  152.  
  153.         hr = pUnk->QueryInterface(IID_IInvisible, (void **)&pInvisible);
  154.         if (FAILED(hr)) return FALSE;
  155.  
  156.         pInvisible->get_TimeOut(&l);
  157.         SetDlgItemInt(hwnd, IDC_TIMEOUT, l, TRUE);
  158.  
  159.         pInvisible->Release();
  160.         }
  161.         return TRUE;
  162.  
  163.       case PPM_APPLY:
  164.         {
  165.         IInvisible  *pInvisible;
  166.         IUnknown *pUnk;
  167.         HRESULT   hr;
  168.         DWORD     dwCookie;
  169.         long      l;
  170.  
  171.         // get all the controls we have to update.
  172.         //
  173.         for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
  174.             hr = pUnk->QueryInterface(IID_IInvisible, (void **)&pInvisible);
  175.             if (FAILED(hr)) continue;
  176.     
  177.             l = (long)GetDlgItemInt(hwnd, IDC_TIMEOUT, NULL, TRUE);
  178.             pInvisible->put_TimeOut(l);
  179.             pInvisible->Release();
  180.         }
  181.         }
  182.         return TRUE;
  183.  
  184.       case WM_COMMAND:
  185.         switch (LOWORD(wParam)) {
  186.           case IDC_TIMEOUT:
  187.             if (HIWORD(wParam) == EN_CHANGE)
  188.                 MakeDirty();
  189.         }
  190.         break;
  191.     }
  192.  
  193.     return FALSE;
  194. }
  195.  
  196.  
  197.  
  198.  
  199.